home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2004 #2 / Amiga Plus CD - 2004 - No. 02.iso / AmiSoft / Gfx / conv / GS8gui.lha / GS8gui / GS8gui.rexx_old < prev   
Text File  |  2004-01-06  |  34KB  |  1,300 lines

  1. /*
  2. ** -----------------------------------------------
  3. **  $VER: GS8gui V0.05 (30 Dec 2003)
  4. **  ©2003 Michael Merkel
  5. ** -----------------------------------------------
  6. */
  7.  
  8. SIGNAL ON SYNTAX
  9. SIGNAL ON HALT
  10. SIGNAL ON ERROR
  11. SIGNAL ON BREAK_C
  12. OPTIONS RESULTS
  13.  
  14. /*
  15. TRACE ALL
  16. */
  17. global.DEBUG = 1
  18.  
  19. Call Init       /* init globals */
  20.  
  21. Call CreateApp  /* build and open window and stuff */
  22. Call HandleApp  /* event loop */
  23.  
  24. EXIT
  25.  
  26. /*===========================================================================*/
  27. /*===========================================================================*/
  28. /*===========================================================================*/
  29.  
  30. /* /// Init( )
  31. */
  32. Init:
  33.     /* first of all add the needed libraries */
  34.     IF ~show("L","rmh.library")
  35.     THEN IF ~AddLib("rmh.library", 0, -30) THEN EXIT
  36.  
  37.     IF RMH_AddLibrary('rxmui.library')~=0
  38.     THEN DO
  39.         Call RMH_EasyRequest("Couldn't open" result, "Error opening the library", 'Quit')
  40.         Signal Quit
  41.     END
  42.  
  43.     IF RMH_AddLibrary('rxasl.library')~=0
  44.     THEN DO
  45.         Call RMH_EasyRequest("Couldn't open" result, "Error opening the library", 'Quit')
  46.         Signal Quit
  47.     END
  48.  
  49.     Call RMH_MacroEnv('Macro','ProgDir')
  50.  
  51.     /* set globals and defaults (including settings) */
  52.     Call SetDefaults
  53.  
  54.     /* check for existing gs8 executeable */
  55.     IF Exists(global.gs8) = 0
  56.     THEN DO
  57.         Call RMH_EasyRequest("Couldn't open gs8 executeable:" global.gs8 "- Check Tooltype!", "gs8 executeable not found", 'Quit')
  58.         Signal Quit
  59.     END
  60.  
  61.     /* set DEBUG mode */
  62.     IF global.DEBUG = const.bool.TRUE
  63.     THEN Call rxMuiOpt("DEBUGMODE SHOWERR")
  64.  
  65. Return
  66. /* /// */
  67. /* /// CreateApp( )
  68. */
  69. CreateApp:
  70.     /* build GUI */
  71.     Call BuildGUI
  72.  
  73.     /* default settings */
  74.     Call LoadProject( )
  75.  
  76.     /* open window */
  77.     Call Set("muiWin", "OPEN", 1)
  78.     Call GetAttr("muiWin", "OPEN", "o")
  79.     IF (o = 0)
  80.     THEN DO
  81.         Call RMH_EasyRequest("Can not open window -> QUIT", "ADFMaker", 'Quit')
  82.         Signal Quit
  83.     END
  84.  
  85.     /* set defaults to window */
  86.     Call Set("muiWin", "SLEEP", 1)
  87.     Call PrefsWindowSet()
  88.     Call Set("muiWin", "SLEEP", 0)
  89.  
  90. Return
  91. /* /// */
  92. /* /// BuildGUI()
  93. */
  94. BuildGUI:
  95.     PROCEDURE expose global. const. prefs.
  96.  
  97.     /*
  98.     ** Create the rxMUI GUI
  99.     ** --------------------
  100.     */
  101.  
  102.     /* first of all the let's define the application object */
  103.     muiApp.Title               = const.info.muiName
  104.     muiApp.Version             = "$VER: "|| const.info.muiVersion ||' ('|| const.info.muiDate ||')'
  105.     muiApp.Copyright           = const.info.muiCopy
  106.     muiApp.Author              = const.info.muiAuthor
  107.     muiApp.Description         = const.info.muiDescription
  108.     muiApp.Base                = const.info.muiName
  109.     muiApp.diskobject          = const.info.muiName
  110.     muiApp.ctrlc               = const.bool.TRUE
  111.     muiApp.menustrip           = "muiMenuStrip"
  112.     muiApp.subwindow           = "muiWin"
  113.  
  114.     /* let's define the window */
  115.     muiWin.ID                   = "MAIN"
  116.     muiWin.Title                = const.info.muiName const.info.muiVersion ||' ('|| const.info.muiDate ||') - '|| const.info.muiCopy
  117.     muiWin.Contents             = "muiMainGroup"
  118.  
  119.     /* define the menu */
  120.     muiMenuStrip.0 = "muiMenuProject"
  121.         muiMenuProject.Title    = "Project"
  122.         muiMenuProject.Class    = "MENU"
  123.         muiMenuProject.0        = MenuItem("muiProjectOpen",    "Open...",            "O"    )
  124.         muiMenuProject.1        = MenuItem("muiProjectSave",    "Save",                "S"    )
  125.         muiMenuProject.2        = MenuItem("muiProjectSaveAs",    "Save As...",        "A"    )
  126.         muiMenuProject.3        = MenuItem("",                    "BAR"                    )
  127.         muiMenuProject.4        = MenuItem("muiMenuQuit",        "Quit",                "Q"    )
  128.  
  129.     muiMenuStrip.1 = "muiMenuPrefs"
  130.         muiMenuPrefs.Title        = "Prefs"
  131.         muiMenuPrefs.Class        = "MENU"
  132.         muiMenuPrefs.0            = MenuItem("muiPrefsLast",        "Last saved",        "L" )
  133.         muiMenuPrefs.1            = MenuItem("",                    "BAR"                    )
  134.         muiMenuPrefs.2            = MenuItem("muiPrefsMUI",        "MUI...",            "M"    )
  135.  
  136.     muiMenuStrip.2 = "muiMenuAbout"
  137.         muiMenuAbout.Title        = "?"
  138.         muiMenuAbout.Class        = "MENU"
  139.         muiMenuAbout.0            = MenuItem("muiMenuAboutME",    "About...",            "?"    )
  140.         muiMenuAbout.1            = MenuItem("",                    "BAR"                    )
  141.         muiMenuAbout.2            = MenuItem("muiMenuAboutrxMUI",    "About RxMUI..."        )
  142.         muiMenuAbout.3            = MenuItem("muiMenuAboutMUI",    "About MUI..."            )
  143.  
  144.     res = NewObj("MENUSTRIP", "muiMenuStrip")
  145.     IF (res ~= 0)
  146.     THEN Call Err(res)
  147.  
  148.     /* let's define the window content */
  149.     muiMainGroup.0            = "muiGroup0"
  150.         muiGroup0.Class            = "TheBar"
  151.         muiGroup0.Horiz            = 1
  152.         muiGroup0.PicsDrawer    = "Pics"
  153.  
  154.         /* Define the pics */
  155.         muiGroup0.Pics.0        = "Display"
  156.         muiGroup0.Pics.1        = "Print"
  157.         muiGroup0.Pics.2        = "Convert"
  158. /*
  159.         muiGroup0.Pics.3        = "Prefs"
  160. */
  161.  
  162.         /* Define the buttons */
  163.  
  164.         /* ID:0 - Image: "display" */
  165.         muiGroup0.0.ID      = 0
  166.         muiGroup0.0.Img      = 0
  167.         muiGroup0.0.Text  = "Display"
  168.  
  169.         /* ID:1 - Image: "print" */
  170.         muiGroup0.1.ID      = 1
  171.         muiGroup0.1.Img      = 1
  172.         muiGroup0.1.Text  = "Print"
  173.  
  174.         /* ID:2 - Image: "convert" */
  175.         muiGroup0.2.ID      = 2
  176.         muiGroup0.2.Img      = 2
  177.         muiGroup0.2.Text  = "Convert"
  178.  
  179.         /* spacer */
  180.         muiGroup0.3.Img="Bar"
  181. /*
  182.         /* ID:4 - Image: "ENV Prefs" */
  183.         muiGroup0.4.ID      = 4
  184.         muiGroup0.4.Img      = 3
  185.         muiGroup0.4.Text  =    "Prefs"
  186. */
  187.  
  188.     muiMainGroup.1        = "muiGroupPage00"
  189.         muiGroupPage00.Class    = "GROUP"
  190.         muiGroupPage00.Horiz    = 0
  191.  
  192.         muiGroupPage00.0        = VSpace(10)
  193.  
  194.         muiGroupPage00.1        = "muiFile"
  195.             muiFile.Class            = "GROUP"
  196.             muiFile.Horiz            = "1"
  197.             muiFile.Columns            = "2"
  198.             muiFile.0                = Label(ParseText("%bPostscript/PDF file:%n"))
  199.             muiFile.1                = "g_psfile"
  200.                 g_psfile.Class            = "POPASL"
  201.                 g_psfile.Type            = "FILE"
  202.                 g_psfile.Title            = "PostScript/PDF file..."
  203.                 g_psfile.PositiveText    = "Ok"
  204.                 g_psfile.NegativeText    = "Cancel"
  205.                 g_psfile.RejectIcons    = 1
  206.                     g_psfilename.ObjectID    = "GSPS"
  207.                     g_psfilename.ShortHelp    = ParseText("%bPDF%n or %bPS%n file to work on")
  208.                 g_psfile.String            = String("g_psfilename",,"document.PDF")
  209.                 Call AddGUIGadget( "g_psFileName", "GSPS", "CONTENTS" )
  210.  
  211.         muiGroupPage00.2        = VSpace(10)
  212.  
  213.         muiGroupPage00.3        = "muiSettings"
  214.             muiSettings.Class        = "REGISTER"
  215.             muiSettings.Titles        = "display settings|print settings|convert settings"
  216.  
  217.             /* DISPLAY SETTINGS */
  218.             muiSettings.0            = "muiSettingsDisplay"
  219.                 muiSettingsDisplay.Class    = "GROUP"
  220.                 muiSettingsDisplay.0        = "muiSD01"
  221.                     muiSD01.Class                = "GROUP"
  222.                     muiSD01.Frame                = "GROUP"
  223.                     muiSD01.FrameTitle            = "General display settings"
  224.                     muiSD01.Columns                = "2"
  225.                     muiSD01.0                    = Label(ParseText("%uR%nesolution:"))
  226.                         g_d_dpi.ObjectID = "GSDR"
  227.                     muiSD01.1                    = MakeObj("g_d_dpi", "Slider", "R", "50", "600", "100", "%ld dpi")
  228.                     Call AddGUIGadget( "g_d_dpi", "GSDR", "VALUE" )
  229.                     muiSD01.2                    = Label(ParseText("P%ua%nge:"))
  230.                         g_d_page.ObjectID    = "GSDA"
  231.                         g_d_page.ShortHelp    = ParseText("Only works for PDF files! When used for PS files this has NO effect.\nActually the %ucomplete%n PS file is viewed - be carefull!")
  232.                     muiSD01.3                    = MakeObj("g_d_page", "Slider", "P", "1", "100", "1", "Page %ld")
  233.                     Call AddGUIGadget( "g_d_page", "GSDA", "VALUE" )
  234.                     muiSD01.4                    = Label(ParseText("%uM%nethod:"))
  235.                         g_d_method.ObjectID        = "GSDM"
  236.                         g_d_method.ShortHelp    = ParseText("%bInternal%n will use the phantastic WHOOSH display driver.\n%bExternal%n will convert the file to a picture and show this instead.")
  237.                     muiSD01.5                    = MakeObj("g_d_method","Cycle", "internal|external (bitmap)", "M", "0")
  238.                     Call AddGUIGadget( "g_d_method", "GSDM", "ACTIVE" )
  239.                 /* INTERNAL VIEWER */
  240.                 muiSettingsDisplay.1        = "muiSD02"
  241.                     muiSD02.Class                = "GROUP"
  242.                     muiSD02.Frame                = "GROUP"
  243.                     muiSD02.FrameTitle            = "Internal viewer"
  244.                     muiSD02.Columns                = "2"
  245.                     muiSD02.0                    = Label(ParseText("%uD%nevice:"))
  246.                         g_d_device.ObjectID = "GSDD"
  247.                     muiSD02.1                    = MakeObj("g_d_device","Cycle", "24 bit|8 bit grey|1 bit b/w", "D", "0")
  248.                     Call AddGUIGadget( "g_d_device", "GSDD", "ACTIVE" )
  249.                     muiSD02.2                    = Label(ParseText("Use own %us%ncreen"))
  250.                     muiSD02.3                    = "muiSD020"
  251.                         muiSD020.Class                = "GROUP"
  252.                         muiSD020.Horiz                = "1"
  253.                         muiSD020.Horiz                = "1"
  254.                             g_d_screen.ObjectID = "GSDU"
  255.                         muiSD020.0                    = Checkmark("g_d_screen", 0)
  256.                         Call AddGUIGadget( "g_d_screen", "GSDU", "SELECTED" )
  257.                         muiSD020.1                    = Label(ParseText("like WorkBench"))
  258.                             g_d_screenwb.ObjectID = "GSDW"
  259.                         muiSD020.2                    = Checkmark("g_d_screenwb", 0)
  260.                         Call AddGUIGadget( "g_d_screenwb", "GSDW", "SELECTED" )
  261.                         muiSD020.3                    = HSpace( )
  262.                 /* EXTERNAL VIEWER */
  263.                 muiSettingsDisplay.2        = "muiSD03"
  264.                     muiSD03.Class                = "GROUP"
  265.                     muiSD03.Disabled            = 1
  266.                     muiSD03.Frame                = "GROUP"
  267.                     muiSD03.FrameTitle            = "External viewer (bitmap)"
  268.                     muiSD03.Columns                = "2"
  269.                     muiSD03.0                    = Label(ParseText("External viewer:"))
  270.                     muiSD03.1                    = "muiEXViewer"
  271.                         muiEXViewer.Class              = "POPASL"
  272.                         muiEXViewer.Type              = "FILE"
  273.                         muiEXViewer.Title              = "External viewer..."
  274.                         muiEXViewer.PositiveText      = "Ok"
  275.                         muiEXViewer.NegativeText      = "Cancel"
  276.                         muiEXViewer.RejectIcons          = 1
  277.                             g_d_ex_viewer.ObjectID = "GSDE"
  278.                         muiEXViewer.String              = String("g_d_ex_viewer")
  279.                         Call AddGUIGadget( "g_d_ex_viewer", "GSDE", "CONTENTS" )
  280.  
  281.                     muiSD03.2                    = Label(ParseText("%uB%nitmap format:"))
  282.                         g_d_bm_format.ObjectID = "GSDF"
  283.                     muiSD03.3                    = MakeObj("g_d_bm_format", "Cycle", "JPEG|PNG|TIFF", "B", "0")
  284.                     Call AddGUIGadget( "g_d_bm_format", "GSDF", "ACTIVE" )
  285.                     muiSD03.4                    = Label(ParseText("%uQ%nality:"))
  286.                         g_d_bm_quality.ObjectID = "GSDQ"
  287.                     muiSD03.5                    = MakeObj("g_d_bm_quality", "Cycle", "24 bit color|8 bit grey|1 bit b/w", "Q", "0")
  288.                     Call AddGUIGadget( "g_d_bm_quality", "GSDQ", "ACTIVE" )
  289.                     muiSD03.6                    = Label(ParseText("File path:"))
  290.                     muiSD03.7                    = "muiBMPath"
  291.                         muiBMPath.Class                = "POPASL"
  292.                         muiBMPath.Type                = "FILE"
  293.                         muiBMPath.DrawersOnly        = "1"
  294.                         muiBMPath.Title                = "File path for bitmap..."
  295.                         muiBMPath.PositiveText        = "Ok"
  296.                         muiBMPath.NegativeText        = "Cancel"
  297.                         muiBMPath.RejectIcons        = 1
  298.                             g_d_bm_path.ObjectID = "GSDP"
  299.                         muiBMPath.String            = String("g_d_bm_path")
  300.                         Call AddGUIGadget( "g_d_bm_path", "GSDP", "CONTENTS" )
  301.  
  302.             /* PRINT SETTINGS */
  303.             muiSettings.1            = "muiSettingsPrint"
  304.                 muiSettingsPrint.Class        = "GROUP"
  305.                 muiSettingsPrint.0            = "muiSP01"
  306.                     muiSP01.Class                = "GROUP"
  307.                     muiSP01.Frame                = "GROUP"
  308.                     muiSP01.FrameTitle            = "Sending file to printer"
  309.                     muiSP01.Columns                = "2"
  310.                     muiSP01.0                    = Label(ParseText("%uR%nesolution:"))
  311.                         g_p_dpi.ObjectID    = "GSPR"
  312.                         g_p_dpi.Stringify    = "PARSE ARG val; IF (val = 0) THEN RETURN 'default';ELSE RETURN val 'dpi'"
  313.                         g_p_dpi.ShortHelp    = ParseText("Use %bdefault%n when using TurboPrint:\nTurboPrint resolution settings are used instead.")
  314.                     muiSP01.1                    = MakeObj("g_p_dpi", "Slider", "R", "0", "600", "0", "%ld dpi")
  315.                     Call AddGUIGadget( "g_p_dpi", "GSPR", "VALUE" )
  316.                     muiSP01.2                    = Label(ParseText("%uF%nrom:"))
  317.                         g_p_page1.ObjectID = "GSP1"
  318.                     muiSP01.3                    = MakeObj("g_p_page1", "Slider", "1", "1", "100", "1", "Page %ld")
  319.                     Call AddGUIGadget( "g_p_page1", "GSP1", "VALUE" )
  320.                     muiSP01.4                    = Label(ParseText("%uT%no:"))
  321.                         g_p_page2.ObjectID = "GSP2"
  322.                     muiSP01.5                    = MakeObj("g_p_page2", "Slider", "2", "1", "100", "1", "Page %ld")
  323.                     Call AddGUIGadget( "g_p_page2", "GSP2", "VALUE" )
  324.                 muiSettingsPrint.1            = "muiSP02"
  325.                     muiSP02.Class                = "GROUP"
  326.                     muiSP02.Frame                = "GROUP"
  327.                     muiSP02.FrameTitle            = "Output device"
  328.                     muiSP02.Columns                = "2"
  329.                     muiSP02.0                    = Label(ParseText("%uD%nevice:"))
  330.                         g_p_device.ObjectID = "GSPD"
  331.                     muiSP02.1                    = MakeObj("g_p_device","Cycle", "tp24|tp8g|tp1", "D", "0")
  332.                     Call AddGUIGadget( "g_p_device", "GSPD", "ACTIVE" )
  333.             
  334.             /* CONVERT SETTINGS */
  335.             muiSettings.2            = "muiSettingsConvert"
  336.                 muiSettingsConvert.Class    = "GROUP"
  337.                 muiSettingsConvert.0        = "muiSC01"
  338.                     muiSC01.Class                = "GROUP"
  339.                     muiSC01.Frame                = "GROUP"
  340.                     muiSC01.FrameTitle            = "Covert PS/PDF file"
  341.                     muiSC01.Columns                = "2"
  342.                     muiSC01.0                    = Label(ParseText("%uR%nesolution:"))
  343.                         g_c_dpi.ObjectID    = "GSCR"
  344.                         g_c_dpi.Stringify    = "PARSE ARG val; IF (val = 0) THEN RETURN 'default';ELSE RETURN val 'dpi'"
  345.                     muiSC01.1                    = MakeObj("g_c_dpi", "Slider", "R", "0", "600", "0", "%ld dpi")
  346.                     Call AddGUIGadget( "g_c_dpi", "GSCR", "VALUE" )
  347.                     muiSC01.2                    = Label(ParseText("%uF%nrom:"))
  348.                         g_c_page1.ObjectID = "GSC1"
  349.                     muiSC01.3                    = MakeObj("g_c_page1", "Slider", "1", "1", "100", "1", "Page %ld")
  350.                     Call AddGUIGadget( "g_c_page1", "GSC1", "VALUE" )
  351.                     muiSC01.4                    = Label(ParseText("%uT%no:"))
  352.                         g_c_page2.ObjectID = "GSC2"
  353.                     muiSC01.5                    = MakeObj("g_c_page2", "Slider", "2", "1", "100", "1", "Page %ld")
  354.                     Call AddGUIGadget( "g_c_page2", "GSC2", "VALUE" )
  355.                 /* INTERNAL DEVICE */
  356.                 muiSettingsConvert.1        = "muiSC02"
  357.                     muiSC02.Class                = "GROUP"
  358.                     muiSC02.Frame                = "GROUP"
  359.                     muiSC02.FrameTitle            = "Output device"
  360.                     muiSC02.Columns                = "2"
  361.                     muiSC02.0                    = Label(ParseText("%uD%nevice:"))
  362.                         g_c_device.ObjectID = "GSCD"
  363.                     muiSC02.1                    = MakeObj("g_c_device","Cycle", "PDF|EPS|PS|TIFF|PNG|JPEG", "D", "0")
  364.                     Call AddGUIGadget( "g_c_device", "GSCD", "ACTIVE" )
  365.                     muiSC02.2                    = Label(ParseText("Destination file:"))
  366.                     muiSC02.3                    = "muiConvFile"
  367.                         muiConvFile.Class            = "POPASL"
  368.                         muiConvFile.Type            = "FILE"
  369.                         muiConvFile.Title            = "Destination file..."
  370.                         muiConvFile.PositiveText    = "Ok"
  371.                         muiConvFile.NegativeText    = "Cancel"
  372.                         muiConvFile.RejectIcons        = 1
  373.                             g_c_conv_file.ObjectID        = "GSCF"
  374.                             g_c_conv_file.ShortHelp        = ParseText("%b\%d%n inside the filename will be\nreplaced by the page number\n(see gs8 documentation for more info)")
  375.                         muiConvFile.String            = String("g_c_conv_file")
  376.                         Call AddGUIGadget( "g_c_conv_file", "GSCF", "CONTENTS" )
  377.  
  378.             /*----------------------------------------------------------*/
  379.  
  380.     /* create all */
  381.     Call NewObj("APPLICATION","muiApp")
  382.     global.ActiveWin = global.TRUE
  383.     global.ActiveApp = global.TRUE
  384.  
  385.     Call BuildActionWIN()
  386.  
  387.     /* window close gadget means quit... */
  388.     Call Notify("muiWin",    "CLOSEREQUEST", const.bool.TRUE, "muiApp", "RETURNID", "QUIT")
  389.  
  390.     /* Buttons... */
  391.     Call TheBarNotify("muiGroup0", "0", "PRESSED", 0, "_APP", "RETURN", "DO_DISPLAY")
  392.     Call TheBarNotify("muiGroup0", "1", "PRESSED", 0, "_APP", "RETURN", "DO_PRINT")
  393.     Call TheBarNotify("muiGroup0", "2", "PRESSED", 0, "_APP", "RETURN", "DO_CONVERT")
  394.  
  395.  
  396.     /* Menu events... */
  397.     Call Notify("muiProjectOpen",        "MENUTRIGGER", "EVERYTIME", "muiApp", "RETURNID")
  398.     Call Notify("muiProjectSave",        "MENUTRIGGER", "EVERYTIME", "muiApp", "RETURNID")
  399.     Call Notify("muiProjectSaveAs",        "MENUTRIGGER", "EVERYTIME", "muiApp", "RETURNID")
  400.     Call Notify("muiMenuQuit",            "MENUTRIGGER", "EVERYTIME", "muiApp", "RETURNID")
  401.  
  402.     Call Notify("muiPrefsLast",            "MENUTRIGGER", "EVERYTIME", "muiApp", "RETURNID")
  403.     Call Notify("muiPrefsMUI",            "MENUTRIGGER", "EVERYTIME", "muiApp", "OpenConfigWindow")
  404.  
  405.     Call Notify("muiMenuAboutME",        "MENUTRIGGER", "EVERYTIME", "muiApp", "ABOUT",      "muiWin")
  406.     Call Notify("muiMenuAboutrxMUI",    "MENUTRIGGER", "EVERYTIME", "muiApp", "ABOUTRXMUI", "muiWin")
  407.     Call Notify("muiMenuAboutMUI",        "MENUTRIGGER", "EVERYTIME", "muiApp", "ABOUTMUI",   "muiWin")
  408.  
  409.     Call Notify("g_d_method", "ACTIVE", 0, "muiSD02", "SET", "DISABLED", 0)
  410.     Call Notify("g_d_method", "ACTIVE", 0, "muiSD03", "SET", "DISABLED", 1)
  411.     Call Notify("g_d_method", "ACTIVE", 1, "muiSD02", "SET", "DISABLED", 1)
  412.     Call Notify("g_d_method", "ACTIVE", 1, "muiSD03", "SET", "DISABLED", 0)
  413.  
  414.     Call Notify("g_psfilename",        "CHANGED", "EVERYTIME", "muiAPP", "RETURN", "PSFILECHANGE")
  415.     Call Notify("g_c_conv_file",    "CHANGED", "EVERYTIME", "muiAPP", "RETURN", "CONVFILECHANGE")
  416.  
  417.     Call Notify("g_d_screen", "SELECTED", 1, "g_d_screenwb", "SET", "DISABLED", 0)
  418.     Call Notify("g_d_screen", "SELECTED", 0, "g_d_screenwb", "SET", "DISABLED", 1)
  419.  
  420.     Call SetAttr("g_d_screenwb", "DISABLED", 1)
  421.  
  422. Return
  423. /* /// */
  424. /* /// BuildActionWin()
  425. */
  426. BuildActionWin:
  427.     PROCEDURE expose global. const. prefs.
  428.  
  429.     actionWin.ID                = "AWin"
  430.     actionWin.SizeGadget        = 1
  431.     actionWin.Background        = "TextBack"
  432.     actionWin.Title                = "please wait..."
  433.     actionWin.Contents              = "infoGroup"
  434.         infoGroup.0                    = "infoTitle"
  435.             infoTitle.Class                = "TEXT"
  436.             infoTitle.Font                = "Big"
  437.             infoTitle.Contents            = ParseText("%c  --== %bGhostscript 8 working%n ==--  ")
  438.         infoGroup.1                = "actionInfo"
  439.             actionInfo.Class        = "TEXT"
  440.             actionInfo.Font            = "Tiny"
  441.             actionInfo.Contents        = ParseText("%baction...%n ")
  442.  
  443.         infoGroup.2                = HBAR()
  444.         infoGroup.3                = VSPACE(2)
  445.         infoGroup.4                = Text("intro", "please wait...", "none", "none")
  446.  
  447.  
  448.     IF NewObj("Window", "actionWin") > 0
  449.     THEN DO
  450.         Call Failure("Can't create progress window")
  451.         Return
  452.     END
  453.  
  454.     Call Add("muiApp", "actionWin")
  455.     Call Set("actionWin","open",0)
  456.  
  457. Return
  458. /* /// */
  459.  
  460. /* /// HandleApp( )
  461. */
  462. HandleApp:
  463.  
  464.     /* this is the standard cycle to handle an application */
  465.     sig_CTRL_C = 2**12
  466.     s = sig_CTRL_C
  467.  
  468.     DO FOREVER
  469.         h.event = ''
  470.         Call NewHandle("muiAPP", "H", s)
  471.  
  472.         IF ( and(h.signals, sig_CTRL_C) > 0 )
  473.         THEN EXIT
  474.  
  475.         SELECT
  476.             /* WINDOW CLOSE */
  477.             WHEN (Upper(h.event) = "QUIT")
  478.             THEN DO
  479.                 Call SaveProject( )
  480.                 Signal QUIT
  481.                 EXIT
  482.             END
  483.  
  484.             /* QUIT */
  485.             WHEN (Upper(h.event) = "MUIMENUQUIT")
  486.             THEN DO
  487.                 IF ( EasyRequest('Really Quit?', const.info.muiName, 'Yes|NO') = 1 )
  488.                 THEN DO
  489.                     Call SaveProject( "" )
  490.                     Signal QUIT
  491.                     EXIT
  492.                 END
  493.             END
  494.  
  495.             /* open project file */
  496.             WHEN (Upper(h.event) = "MUIPROJECTOPEN")
  497.             THEN DO
  498.                 project = GetFileName( )
  499.                 Call LoadProject( project )
  500.                 Call PrefsWindowSet()
  501.             END
  502.  
  503.             /* save project file */
  504.             WHEN (Upper(h.event) = "MUIPROJECTSAVE")
  505.             THEN DO
  506.                 Call SaveProject( "" )
  507.             END
  508.  
  509.             /* save project file as */
  510.             WHEN (Upper(h.event) = "MUIPROJECTSAVEAS")
  511.             THEN DO
  512.                 project = GetFileName( )
  513.                 Call SaveProject(project )
  514.             END
  515.  
  516.             /* reset to last saved settings (ENVARC) */
  517.             WHEN (Upper(h.event) = "MUIPREFSLAST")
  518.             THEN DO
  519.                 Call LoadProject( "" )
  520.                 Call PrefsWindowSet()
  521.             END
  522.  
  523.             /* DISPLAY file */
  524.             WHEN (Upper(h.event) = "DO_DISPLAY")
  525.             THEN DO
  526.                 Call DoDisplay( )
  527.             END
  528.  
  529.             /* PRINT file */
  530.             WHEN (Upper(h.event) = "DO_PRINT")
  531.             THEN DO
  532.                 Call DoPrint( )
  533.             END
  534.             
  535.             /* CONVERT file */
  536.             WHEN (Upper(h.event) = "DO_CONVERT")
  537.             THEN DO
  538.                 Call DoConvert( )
  539.             END
  540.  
  541.             /* CONVERT file */
  542.             WHEN (Upper(h.event) = "METHODCHANGE11111")
  543.             THEN DO
  544.                 Say "removing..." h.active
  545.                 Call DoMethod("muiSettingsDisplay", "InitChange")
  546.  
  547.                 IF h.active = 0
  548.                 THEN DO
  549.                     Call Remove("muiSD03")
  550.                     Call Add("muiSettingsDisplay", "muiSD02")
  551. /*
  552.                     Call DoMethod("muiSettingsDisplay", "SORT", "muiSD02", "DummyVSPACE")
  553. */
  554.                 END
  555.  
  556.                 IF h.active = 1
  557.                 THEN DO
  558.                     Call Remove("muiSD02")
  559.                     Call Add("muiSettingsDisplay", "muiSD03")
  560. /*
  561.                     Call DoMethod("muiSettingsDisplay", "SORT", "muiSD03", "DummyVSpace")
  562. */
  563.                 END
  564.  
  565.                 Call DoMethod("muiSettingsDisplay", "ExitChange")
  566.             END
  567.  
  568.  
  569.             /* enable/disable page settings */
  570.             WHEN (Upper(h.event) = "PSFILECHANGE")
  571.             THEN DO
  572.                 Call PrefsWindowGet( )
  573.                 file = GetGUIGadget("g_psfilename")
  574.                 IF IsPDF( file ) = const.bool.TRUE
  575.                 THEN DO
  576.                     Call Set("g_d_page", "DISABLED", 0)
  577.                     Call Set("g_p_page1", "DISABLED", 0)
  578.                     Call Set("g_p_page2", "DISABLED", 0)
  579.                     Call Set("g_c_page1", "DISABLED", 0)
  580.                     Call Set("g_c_page2", "DISABLED", 0)
  581.                 END
  582.                 ELSE DO
  583.                     Call Set("g_d_page", "DISABLED", 1)
  584.                     Call Set("g_p_page1", "DISABLED", 1)
  585.                     Call Set("g_p_page2", "DISABLED", 1)
  586.                     Call Set("g_c_page1", "DISABLED", 1)
  587.                     Call Set("g_c_page2", "DISABLED", 1)
  588.                 END
  589.             END
  590.  
  591.             /* correct "Ram Disk:" to "RAM:" for convertion files */
  592.             WHEN (Upper(h.event) = "CONVFILECHANGE")
  593.             THEN DO
  594.                 Call PrefsWindowGet( )
  595.                 file = GetGUIGadget("g_c_conv_file")
  596.                 IF Upper(Left(file, 9)) = "RAM DISK:"
  597.                 THEN DO
  598.                     file = "RAM:" || SubStr(file, 10)
  599.                     Call Set("g_c_conv_file", "CONTENTS", file)
  600.                 END
  601.             END
  602.  
  603.             /**/
  604.             OTHERWISE
  605.             DO
  606.                 Call dumpVar('h.event')
  607.             END
  608.  
  609.         END
  610.     END
  611. Return
  612. /* /// */
  613.  
  614. /* /// SetDefaults()
  615. */
  616. SetDefaults:
  617.  
  618.     /* defaults needed in the program */
  619.     const.bool.0            = 'FALSE'
  620.     const.bool.1            = 'TRUE'
  621.     const.bool.TRUE          = 1
  622.     const.bool.FALSE         = 0
  623.     const.settingFileHandle    = "GS8"
  624.     const.settingFileName    = "ENV:gs8_GUIscript"
  625.  
  626.     const.Info.muiName            = 'GS8gui'
  627.     const.Info.muiVersion        = 'V0.05'
  628.     const.Info.muiAuthor        = 'Michael Merkel'
  629.     const.Info.muiCopy            = '©2003 Michael Merkel'
  630.     const.Info.muiDate            = '2003/12/30'
  631.     const.Info.muiPic            = 'PROGDIR:GS8gui.pic'
  632.     const.Info.muiDescription    = 'Graphical User Interace for Ghostscript8'
  633.     const.guiScriptFile            = 'T:GS8gui.bat'
  634.     const.gs8                     = 'GS8:bin/gs_2n'
  635.  
  636.     const.Gadget.Method            = "internal|external (bitmap)"
  637.  
  638.     /* globals */
  639.     IF Length(global.DEBUG) ~= 1
  640.     THEN global.DEBUG = 0
  641.  
  642.     global.guiAttrCount = 0
  643.  
  644.     /* get tooltype for GS8 executable */
  645.     appPath = ProgramName("NOEXT")
  646.     Call GetToolType(appPath, "GS8", "global.gs8", const.gs8)
  647.  
  648.     Call dumpVar('global.gs8')
  649.  
  650. Return
  651. /* /// */
  652.  
  653. /* /// DoPrint()
  654. */
  655. DoPrint:
  656.     PROCEDURE EXPOSE global. const.
  657.  
  658.     SAY "Printing..."
  659.  
  660.     Call SetAttr("muiWin", "SLEEP", const.bool.TRUE)
  661.  
  662.     Call PrefsWindowGet( )
  663.  
  664.     file    = GetGUIGadget("g_psfilename")
  665.     dpi         = GetGUIGadget("g_p_dpi")
  666.     page1    = Right("000"|| GetGUIGadget("g_p_page1"), 3)
  667.     page2    = Right("000"|| GetGUIGadget("g_p_page2"), 3)
  668.     device    = GetGUIGadget("g_p_device")
  669.  
  670.     Call ActionWindowOpen("Displaying %i"|| file)
  671.  
  672.     IF device = 0
  673.     THEN device = "tp24"
  674.     IF device = 1
  675.     THEN device = "tp8g"
  676.     IF device = 2
  677.     THEN device = "tp1"
  678.  
  679.     SAY dpi device page1 page2
  680.  
  681.     Call Open(const.settingFileHandle, const.guiScriptFile, "W")
  682.  
  683.     Call WriteLN(const.settingFileHandle, 'SET print 0')
  684.     Call WriteLN(const.settingFileHandle, 'SET window 1')
  685.     Call WriteLN(const.settingFileHandle, 'STACK 200000')
  686.     
  687.     /* build command line... */
  688.     command = global.gs8
  689.     command = command || ' -sDEVICE='|| device
  690.     IF ( dpi > 0 )
  691.     THEN command = command || ' -r'|| dpi
  692.  
  693.     IF IsPDF( file ) = const.bool.TRUE
  694.     THEN DO
  695.         command = command || ' -dFirstPage='|| page1
  696.         command = command || ' -dLastPage='|| page2
  697.     END
  698.     command = command || ' -dBATCH -dNOPAUSE -q'
  699.     command = command || ' "'|| file || '"'
  700.  
  701.     Call DumpVar( 'command' )
  702.  
  703.     Call WriteLN(const.settingFileHandle, command)
  704. /*
  705.     Call WriteLN(const.settingFileHandle, 'GS8:gs -sDEVICE='|| device ||' -r'|| dpi ||' -dFirstPage='|| page1 ||' -dLastPage='|| page2 ||' -dBATCH -dNOPAUSE -q "'|| file || '"')
  706. */
  707.     Call Close(const.settingFileHandle)
  708.     Call System('C:Protect '|| const.guiScriptFile ||' +es')
  709.     Call System('C:Execute '|| const.guiScriptFile)
  710.  
  711.     Call ActionWindowClose()
  712.  
  713.     Call SetAttr("muiWin", "SLEEP", const.bool.FALSE)
  714.  
  715. Return
  716. /* /// */
  717. /* /// DoDisplay()
  718. */
  719. DoDisplay:
  720.     PROCEDURE EXPOSE global. const.
  721.  
  722.     SAY "Displaying..."
  723.  
  724.     Call SetAttr("muiWin", "SLEEP", const.bool.TRUE)
  725.  
  726.     Call PrefsWindowGet( )
  727.     
  728.     method     = GetGUIGAdget("g_d_method")
  729.     file    = GetGUIGadget("g_psfilename")
  730.     dpi         = GetGUIGadget("g_d_dpi")
  731.     device    = GetGUIGadget("g_d_device")
  732.  
  733.     Call ActionWindowOpen("Displaying %i"|| file)
  734.  
  735.     IF ( method = 0 )
  736.     THEN Call DoDisplayInternal( )
  737.     ELSE Call DoDisplayExternal( )
  738.  
  739.     Call ActionWindowClose()
  740.  
  741.     Call SetAttr("muiWin", "SLEEP", const.bool.FALSE)
  742.  
  743. Return
  744. /* /// */
  745. /* /// DoDisplayInternal()
  746. */
  747. DoDisplayInternal:
  748.     PROCEDURE EXPOSE global. const.
  749.  
  750.     SAY "...internally"
  751.  
  752.     Call PrefsWindowGet( )
  753.     
  754.     file        = GetGUIGadget("g_psfilename")
  755.     dpi             = GetGUIGadget("g_d_dpi")
  756.     device        = GetGUIGadget("g_d_device")
  757.     page        = Right("000"|| GetGUIGadget("g_d_page"), 3)
  758.     screen        = GetGUIGadget("g_d_screen")
  759.     screenwb    = GetGUIGadget("g_d_screenwb")
  760.  
  761.     IF device = 0
  762.     THEN device = "whoosh24"
  763.     IF device = 1
  764.     THEN device = "whooshg"
  765.     IF device = 2
  766.     THEN device = "whoosh1"
  767.  
  768.     SAY file dpi device page
  769.  
  770.     Call Open(const.settingFileHandle, const.guiScriptFile, "W")
  771.  
  772.     Call WriteLN(const.settingFileHandle, 'SET print 0')
  773.     Call WriteLN(const.settingFileHandle, 'SET window 1')
  774.     IF (screen = 0)
  775.     THEN DO
  776.         Call WriteLN(const.settingFileHandle, 'SET whooshsuper 1')
  777.     END
  778.     ELSE DO
  779.         Call WriteLN(const.settingFileHandle, 'SET whooshsuper 0')
  780.         IF (screenwb = 0)
  781.         THEN DO
  782.             Call WriteLN(const.settingFileHandle, 'SET whooshwbres 0')
  783.         END
  784.         ELSE DO
  785.             Call WriteLN(const.settingFileHandle, 'SET whooshwbres 1')
  786.         END
  787.     END
  788.  
  789. /*
  790. set whooshscreen 102400 ; set custom screen to a specific screenmode
  791. set whooshwbres 1; custom screen to use same screenmode as workbench
  792. set whooshsuper 1 ; WB viewing on
  793. set whooshsuper 0 ; WB viewing off == custom screen viewer on
  794. */
  795.     
  796.     Call WriteLN(const.settingFileHandle, 'STACK 200000')
  797.  
  798.     /* build command line... */
  799.     command = global.gs8
  800.     command = command || ' -sDEVICE='|| device
  801.     IF ( dpi > 0 )
  802.     THEN command = command || ' -r'|| dpi
  803.  
  804.     IF IsPDF( file ) = const.bool.TRUE
  805.     THEN DO
  806.         command = command || ' -dFirstPage='|| page
  807.         command = command || ' -dLastPage='|| page
  808.     END
  809.     command = command || ' -dBATCH -dNOPAUSE -q'
  810.     command = command || ' "'|| file || '"'
  811.  
  812.     Call DumpVar( 'command' )
  813.  
  814.     Call WriteLN(const.settingFileHandle, command)
  815.  
  816.     Call Close(const.settingFileHandle)
  817.     Call System("C:Protect "|| const.guiScriptFile ||" +es")
  818.     Call System("C:Execute "|| const.guiScriptFile)
  819.  
  820. Return
  821. /* /// */
  822. /* /// DoDisplayExternal()
  823. */
  824. DoDisplayExternal:
  825.     PROCEDURE EXPOSE global. const.
  826.  
  827.     SAY ".. externally"
  828.  
  829.     Call PrefsWindowGet( )
  830.     
  831.     file    = GetGUIGadget("g_psfilename")
  832.     dpi         = GetGUIGadget("g_d_dpi")
  833.     page    = Right("000"|| GetGUIGadget("g_d_page"), 3)
  834.     viewer    = GetGUIGadget("g_d_ex_viewer")
  835.     format    = GetGUIGadget("g_d_bm_format")     /*"JPEG|PNG|TIFF"*/
  836.     quality    = GetGUIGadget("g_d_bm_quality")     /*"24 bit color|8 bit grey|1 bit b/w" */
  837.     path    = GetGUIGadget("g_d_bm_path")
  838.  
  839.     SAY file dpi viewer format quality path
  840.  
  841.     SELECT
  842.         WHEN ( format = 0 )
  843.             THEN
  844.                 SELECT
  845.                     WHEN ( quality = 1 )
  846.                         THEN device = "jpeggray"
  847.                     OTHERWISE
  848.                         device = "jpeg"
  849.                 END
  850.         WHEN ( format = 1 )
  851.             THEN
  852.                 SELECT
  853.                     WHEN ( quality = 0 )
  854.                         THEN device = "png16m"
  855.                     WHEN ( quality = 1 )
  856.                         THEN device = "png16"
  857.                     WHEN ( quality = 2 )
  858.                         THEN device = "png256"
  859.                 END
  860.         OTHERWISE
  861.             device = "tifflzw"
  862.     END
  863.     outputfile = AddPart(path, "GS8VIEW.tmp")
  864.  
  865.     SAY device outputfile
  866.  
  867.     Call Open(const.settingFileHandle, const.guiScriptFile, "W")
  868.  
  869.     Call WriteLN(const.settingFileHandle, 'SET print 1')
  870.     Call WriteLN(const.settingFileHandle, 'SET window 0')
  871.     Call WriteLN(const.settingFileHandle, 'STACK 200000')
  872.  
  873.  
  874.     /* build command line... */
  875.     command = global.gs8
  876.     command = command || ' -sDEVICE='|| device
  877.     IF ( dpi > 0 )
  878.     THEN command = command || ' -r'|| dpi
  879.  
  880.     IF IsPDF( file ) = const.bool.TRUE
  881.     THEN DO
  882.         command = command || ' -dFirstPage='|| page
  883.         command = command || ' -dLastPage='|| page
  884.     END
  885.     command = command || ' -sOutputFile='|| outputfile
  886.     command = command || ' -dBATCH -dNOPAUSE -q'
  887.     command = command || ' "'|| file || '"'
  888.  
  889.     Call DumpVar( 'command' )
  890.  
  891.     Call WriteLN(const.settingFileHandle, command)
  892.  
  893.  
  894.     Call Close(const.settingFileHandle)
  895.     Call System("C:Execute "|| const.guiScriptFile)
  896.  
  897.     Call System(viewer || " " || outputfile)
  898.  
  899. Return
  900. /* /// */
  901. /* /// DoConvert()
  902. */
  903. DoConvert:
  904.     PROCEDURE EXPOSE global. const.
  905.  
  906.     SAY "Converting..."
  907.  
  908.     Call SetAttr("muiWin", "SLEEP", const.bool.TRUE)
  909.  
  910.     Call PrefsWindowGet( )
  911.  
  912.     file        = GetGUIGadget("g_psfilename")
  913.     dpi             = GetGUIGadget("g_c_dpi")
  914.     page1        = Right("000"|| GetGUIGadget("g_c_page1"), 3)
  915.     page2        = Right("000"|| GetGUIGadget("g_c_page2"), 3)
  916.     device        = GetGUIGadget("g_c_device")
  917.     convFile    = GetGUIGadget("g_c_conv_file")
  918.     
  919.     Call ActionWindowOpen("Converting %i"|| file)
  920.  
  921.     /*
  922.     muiSC02.1                    = MakeObj("g_c_device","Cycle", "PDF|EPS|PS|TIFF|PNG|JPEG", "D", "0")
  923.     */
  924.  
  925.     IF device = 0
  926.     THEN device = "pdfwrite"
  927.     IF device = 1
  928.     THEN device = "epswrite"
  929.     IF device = 2
  930.     THEN device = "pswrite"
  931.     IF device = 3
  932.     THEN device = "tifflzw"
  933.     IF device = 4
  934.     THEN device = "png16m"
  935.     IF device = 5
  936.     THEN device = "jpeg"
  937.  
  938.     SAY dpi device page1 page2 convFile
  939.  
  940.     Call Open(const.settingFileHandle, const.guiScriptFile, "W")
  941.  
  942.     Call WriteLN(const.settingFileHandle, 'SET print 0')
  943.     Call WriteLN(const.settingFileHandle, 'SET window 1')
  944.     Call WriteLN(const.settingFileHandle, 'STACK 200000')
  945.  
  946.     /* build command line... */
  947.     command = global.gs8
  948.     command = command || ' -sDEVICE='|| device
  949.     IF ( dpi > 0 )
  950.     THEN command = command || ' -r'|| dpi
  951.  
  952.     IF IsPDF( file ) = const.bool.TRUE
  953.     THEN DO
  954.         command = command || ' -dFirstPage='|| page1
  955.         command = command || ' -dLastPage='|| page2
  956.     END
  957.     command = command || ' -sOutputFile='|| convFile
  958.     command = command || ' -dBATCH -dNOPAUSE -q'
  959.     command = command || ' "'|| file || '"'
  960.  
  961.     Call DumpVar( 'command' )
  962.  
  963.     Call WriteLN(const.settingFileHandle, command)
  964.  
  965.     Call Close(const.settingFileHandle)
  966.     Call System("C:Protect "|| const.guiScriptFile ||" +es")
  967.     Call System("C:Execute "|| const.guiScriptFile)
  968.  
  969.     Call ActionWindowClose()
  970.  
  971.     Call SetAttr("muiWin", "SLEEP", const.bool.FALSE)
  972.  
  973. Return
  974. /* /// */
  975.  
  976. /* /// name = GetFileName()
  977. */
  978. GetFileName:
  979.     PROCEDURE EXPOSE global. const.
  980.  
  981.     name = ''
  982.  
  983.     Call System('RequestFile DRAWER="SYS:Prefs/presets" FILE="GS8gui.prefs" PATTERN="#?.prefs"',, "name")
  984.     IF name ~= ''
  985.     THEN DO
  986.         /* remove "s */
  987.         name = Substr(name, 2, Length(name) - 3)
  988.     END
  989.  
  990. Return name
  991. /* /// */
  992. /* /// bool = IsPDF( filename )
  993. */
  994. IsPDF:
  995.     PROCEDURE EXPOSE global. const.
  996.     PARSE ARG fileName
  997.  
  998.     ispdf = const.bool.FALSE
  999.     
  1000.     file= Trim(fileName)
  1001.     IF Upper(Right(file, 4)) = ".PDF"
  1002.     THEN ispdf = const.bool.TRUE
  1003.     ELSE ispdf = const.bool.FALSE
  1004. Return ispdf
  1005. /* /// */
  1006.  
  1007. /* /// LoadProject( project )
  1008. */
  1009. LoadProject:
  1010.     PROCEDURE EXPOSE global. const.
  1011.     PARSE ARG project
  1012.  
  1013.     IF ( project = "" )
  1014.     THEN Call DoMethod("muiAPP", "LOAD", "ENVARC")
  1015.     ELSE Call DoMethod("muiAPP", "LOAD", project)
  1016.  
  1017. Return
  1018. /* /// */
  1019. /* /// SaveProject( project )
  1020. */
  1021. SaveProject:
  1022.     PROCEDURE EXPOSE global. const.
  1023.  
  1024.     PARSE ARG project
  1025.  
  1026.     IF ( project = "" )
  1027.     THEN Call DoMethod("muiAPP", "SAVE", "ENVARC")
  1028.     ELSE Call DoMethod("muiAPP", "SAVE", project)
  1029. Return
  1030. /* /// */
  1031.  
  1032. /* /// AddGUIGadget( gadgetName, gadgetID, attrType )
  1033. */
  1034. AddGUIGadget:
  1035.     PROCEDURE EXPOSE global. const.
  1036.  
  1037.     PARSE ARG gadgetName,gadgetID,attrType
  1038.  
  1039.     gadgetName = Upper(gadgetName)
  1040.  
  1041.     n = global.guiAttrCount
  1042.  
  1043.     global.guiAttr.n        = gadgetName
  1044.     global.guiAttr.n.attr    = attrType
  1045.  
  1046.     global.guiAttrCount = n + 1
  1047.  
  1048.     /* cycle chain */
  1049.     Call Set(gadgetName, "CYCLECHAIN", 1)
  1050.  
  1051.     /* object id if wanted */
  1052.     id = Right("0000"||gadgetID, 4)
  1053.  
  1054. /*
  1055.  
  1056.     IF id ~= "0000"
  1057.     THEN Call Set( gadgetName, "ObjectID", gadgetID )
  1058. */
  1059.  
  1060. Return
  1061. /* /// */
  1062. /* /// SetGUIGadget( gadgetName, attrValue )
  1063. */
  1064. SetGUIGadget:
  1065.     PROCEDURE EXPOSE global. const.
  1066.  
  1067.     PARSE ARG gadgetName,attrValue
  1068.  
  1069.     gadgetName = Upper(gadgetName)
  1070.  
  1071.     n = global.guiAttrCount
  1072.     DO k = 0 TO n
  1073.         IF global.guiAttr.k = gadgetName
  1074.         THEN DO
  1075.             global.guiAttr.k.value = attrValue
  1076.             Return
  1077.         END
  1078.     END
  1079.     Signal ERROR
  1080. Return
  1081. /* /// */
  1082. /* /// attrValue = GetGUIGadget( gadgetName )
  1083. */
  1084. GetGUIGadget:
  1085.     PROCEDURE EXPOSE global. const.
  1086.  
  1087.     PARSE ARG gadgetName
  1088.  
  1089.     gadgetName = Upper(gadgetName)
  1090.  
  1091.     n = global.guiAttrCount
  1092.     DO k = 0 TO n
  1093.         IF global.guiAttr.k = gadgetName
  1094.         THEN DO
  1095.             Return global.guiAttr.k.value
  1096.         END
  1097.     END
  1098.     Signal ERROR
  1099. Return 0
  1100. /* /// */
  1101.  
  1102. /* /// PrefsWindowGet()
  1103. */
  1104. PrefsWindowGet:
  1105.     PROCEDURE EXPOSE global. const.
  1106.  
  1107.     /* read everything at once */
  1108.     Call MultiGetAttr(global.guiAttr)
  1109. Return
  1110. /* /// */
  1111. /* /// PrefsWindowSet()
  1112. */
  1113. PrefsWindowSet:
  1114.     PROCEDURE EXPOSE global. const.
  1115.  
  1116.     /* set everything at once */
  1117.     Call MultiSetAttr(global.guiAttr)
  1118. Return
  1119. /* /// */
  1120.  
  1121. /* /// ActionWindowOpen()
  1122. */
  1123. ActionWindowOpen:
  1124.     PARSE ARG _actionInfo
  1125.  
  1126.     Call Set("actionInfo", "CONTENTS", ParseText("%c%b"|| _actionInfo ||"%n"))
  1127.     Call Set("actionWin","open",1)
  1128.     Call SetAttr("actionWin", "SLEEP", const.bool.TRUE)
  1129.  
  1130. Return
  1131. /* /// */
  1132. /* /// ActionWindowClose()
  1133. */
  1134. ActionWindowClose:
  1135.     Call set("actionWin", "open", 0)
  1136. Return
  1137. /* /// */
  1138.  
  1139. /* /// CleanUp()
  1140. */
  1141. CleanUp:
  1142.     PROCEDURE EXPOSE global. const.
  1143.  
  1144.     /*
  1145.     ** Close busy requester, clean up and leave program
  1146.     ** ------------------------------------------------
  1147.     */
  1148.  
  1149.     IF global.ActiveWin = global.TRUE
  1150.     THEN Call Dispose("muiWin")
  1151.  
  1152.     IF global.ActiveApp = global.TRUE
  1153.     THEN Call Dispose("muiApp")
  1154.  
  1155. EXIT
  1156. /* /// */
  1157.  
  1158. /* /// ErrorRequester( text )
  1159. */
  1160. ErrorRequester: PROCEDURE
  1161.     PARSE ARG meldung
  1162.  
  1163.     /*
  1164.     ** Convert to multiple lines
  1165.     */
  1166.  
  1167.     _num       = 1
  1168.     mLines.num = _num
  1169.     mLines.0   = meldung
  1170.  
  1171.     DO FOREVER
  1172.         _prev = _num-1
  1173.         pos = Index(mLines._prev, '|')
  1174.         IF (pos = 0)
  1175.         THEN LEAVE
  1176.  
  1177.         mLines._num  = SubStr(mLines._prev, pos+1)
  1178.         mLines._prev = Left(mLines._prev, pos-1)
  1179.         _num = _num + 1
  1180.     END
  1181.     mLines.num = _num
  1182.  
  1183.     say "*-------------------------------------------*"
  1184.     l = 0
  1185.     DO kk = 0 TO mLines.num - 1
  1186.         IF (l < Length(mLines.kk) * 8)
  1187.         THEN l = Length(mLines.kk) * 8
  1188.         Say mLines.kk
  1189.     END
  1190.     say "*-------------------------------------------*"
  1191.  
  1192.     Call EasyRequest(meldung, muiName, 'Quit')
  1193.  
  1194. RETURN
  1195. /* /// */
  1196. /* /// ON ERROR/FAILURE
  1197. */
  1198. Error:
  1199. Failure:
  1200.     f = rc
  1201.     str = "Command in line "|| sigl || " throws RC="|| f
  1202.  
  1203.     Call ErrorRequester(str)
  1204.     Signal QUIT
  1205. Exit
  1206. /* /// */
  1207. /* /// ON HALT
  1208. */
  1209. Halt:
  1210.     Signal Quit
  1211. Exit
  1212. /* /// */
  1213. /* /// ON NOVALUE
  1214. */
  1215. NoValue:
  1216.     f = rc
  1217.     str = "Error in line "|| sigl || "used uninitialized variable!"
  1218.  
  1219.     Call ErrorRequester(str)
  1220.  
  1221.     Signal QUIT
  1222. Exit
  1223. /* /// */
  1224. /* /// ON RXMUIERROR
  1225. */
  1226. RxMUIError:
  1227.     IF Symbol('RxMUIError')=='VAR'
  1228.     THEN RxMUIErrorMore=', More:' RxMUIError
  1229.     ELSE RxMUIErrorMore=''
  1230.  
  1231.     f = rc
  1232.     str = "Syntax Error in line "|| sigl || " -- rxMuiError "|| arg(1) ||": " GetRxMUIString(arg(1))RxMUIErrorMore
  1233.  
  1234.     Call ErrorRequester(str)
  1235.  
  1236.     Signal Quit
  1237. Exit
  1238. /* /// */
  1239. /* /// ON SYNTAX
  1240. */
  1241. SYNTAX:
  1242.     f = rc
  1243.     str = "Syntax Error in line "|| sigl || " -- "|| f ||":" ErrorText(f)
  1244.  
  1245.     Call ErrorRequester(str)
  1246.  
  1247.     Signal QUIT
  1248. EXIT
  1249. /* /// */
  1250. /* /// ON QUIT
  1251. */
  1252. Quit:
  1253.     Call CleanUp()
  1254. exit
  1255. /* /// */
  1256. /* /// dumpVar( VarName )
  1257. */
  1258. dumpVar:
  1259.     PARSE ARG vn
  1260.  
  1261.     IF global.DEBUG > 0
  1262.     THEN DO
  1263.         INTERPRET 't = "'|| vn || ' = "'|| vn
  1264.         Call dumpText(t)
  1265.     END
  1266. Return 0
  1267. /* /// */
  1268. /* /// dumpText( text )
  1269. */
  1270. dumpText:
  1271.     PARSE ARG text
  1272.  
  1273.     IF global.DEBUG > 0
  1274.     THEN DO
  1275.         Say text
  1276.         IF global.debug = 2
  1277.         THEN DO
  1278.             IF (global.DumpFile = '')
  1279.             THEN DO
  1280.                 global.DumpFile = 'DumpFile'
  1281.                 Call Open("global.DumpFile", "CON:0/0/1000/100/"|| muiName ||" - DEBUG/CLOSE/WAIT","W")
  1282.             END
  1283.             IF global.DumpFile ~= ''
  1284.             THEN DO
  1285.                 Call WriteLN("global.DumpFile", text)
  1286.             END
  1287.         END
  1288.     END
  1289. Return 0
  1290. /* /// */
  1291.  
  1292. /* /// pos = GetPosString( string, value )
  1293. */
  1294. GetPosString: PROCEDURE
  1295.     PARSE ARG text,value
  1296.     /* "internal|external (bitmap)"    */
  1297. Return pos
  1298. /* /// */
  1299.  
  1300.